package com.x.Part11_myArrays;

/**
 * ClassName: intArray
 * Package: IntelliJ IDEA
 * Description:
 * Written by HanXu
 * Create 2023/9/17 17:50
 */
public class MyArrays {

    /**
     * 获取最小值
     * @param arr 传入数组
     * @return 返回最小值
     */
    public int getMax(int[] arr){
        int max = arr[0];
        for(int i = 1; i < arr.length; i++){
            if(arr[i]>=max)
                max = arr[i];
        }
        return max;
    }

    public int getAvg(int[] arr){
        int sum = 0;
        for(int i = 0; i < arr.length; i++){
           sum += arr[0];
        }
        return  sum/arr.length;
    }

    public int getSum(int[] arr){
        return getAvg(arr) * arr.length;
    }

    public void print(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length - 1; i++){
            System.out.print(arr[i]+", ");
        }
        System.out.println(arr[arr.length - 1]+"]");
    }

    public int[] copy(int[] arr){
        int[] arrNew = new int[arr.length];
        for(int i = 0; i < arr.length; i++)
            arrNew[i] = arr[i];
        return arrNew;
    }

    /**
     *
     * @param arr 数组中查找
     * @param x 被查找元素
     * @return 首个元素下标
     */
    public int linearSearch(int[] arr, int x){
        for(int i = 0; i < arr.length; i++){
            if (arr[i] == x)
                return i;
        }
        return  -1;//代表没找到
    }

    /**
     * 数组反转
     * @param arr 被反转数组
     */
    public void reverse(int[] arr){
        for(int i = 0; i < arr.length/2; i++){
            int temp = arr[i];
            arr[i] = arr[arr.length - i -1];
            arr[arr.length - i -1] = temp;
        }

    }

    /**
     * 冒泡排序
     * @param arr 被排序数组
     */
    public void sort(int[] arr){
        //冒泡排序的时间复杂度为O(n*n)
        int temp = 0;//临时变量
        for (int j = 0; j < arr.length - 1; j++) {
            for (int i = 0; i < arr.length-1 -j ; i++) {
                if (arr[i] > arr[i+1]){
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                }
            }
        }
    }

    /**
     * 升降序排序
     * @param arr 待排序的数组
     * @param method 排序方式
     */
    public void sort(int[] arr, String method){
        if("asc".equals(method)){
            int temp = 0;
            for (int j = 0; j < arr.length - 1; j++) {
                for (int i = 0; i < arr.length-1 -j ; i++) {
                    if (arr[i] > arr[i+1]){
                        //temp = arr[i];
                        //arr[i] = arr[i+1];
                        //arr[i+1] = temp;
                        swap(arr, i ,i+1);
                    }
                }
            }
        }
        else if("desc".equals(method)){
            int temp = 0;
            for (int j = 0; j < arr.length - 1; j++) {
                for (int i = 0; i < arr.length-1 -j ; i++) {
                    if (arr[i] < arr[i+1]){
                        //temp = arr[i];
                        //arr[i] = arr[i+1];
                        //arr[i+1] = temp;
                        swap(arr, i ,i+1);
                    }
                }
            }
        }
        else
            System.out.println("你输入的排序方式有误");
    }

    /**
     * 交换传入数组的两个元素，引用数据类型传递
     * @param arr 传入数组
     * @param i 元素1
     * @param j 元素2
     */
    public void swap(int arr[], int i, int j){
        int temp = 0;
        temp = arr[i];
        arr[i] = arr[i+1];
        arr[i+1] = temp;
    }

}
